package com.wzq.design.business.system.fun.entity;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.baomidou.mybatisplus.annotation.TableName;
import com.wzq.ssm.parent.annotation.EntityProperty;
import com.wzq.ssm.parent.base.entity.BaseTreeEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import org.apache.ibatis.type.Alias;

@EqualsAndHashCode(callSuper = true)
@Data
@TableName(value = "sys_fun")
@Alias("SysFun")
@EntityProperty(content = "功能模块")
public class SysFun extends BaseTreeEntity<SysFun> {

    /**
     * 编号
     */
    private String code;

    /**
     * 名称
     */
    private String name;

    /**
     * 项目id
     */
    private String productId;
    /**
     * 功能类型
     */
    private FunType type;
    /**
     * 设备类型  web-电脑端，mobile-手机端
     */
    private String deviceType;


    /**
     * 路由路径(浏览器地址栏路径)
     */
    private String path;
    /**
     * 组件路径(vue页面完整路径，省略.vue后缀)
     */
    private String component;
    /**
     * 菜单图标
     */
    private String icon;
    /**
     * 排序
     */
    private Integer sort;
    /**
     * 显示状态(1-显示;0-隐藏)
     */
    private Integer visible;


    @Getter
    public enum FunType {
        MENU("fun", "功能"),
        ROUTE("route", "路由"),
        CATALOG("catalog", "目录"),
        BUTTON("button", "按钮");

        @EnumValue //  Mybatis-Plus 提供注解表示插入数据库时插入该值
        private final String value;

        // @JsonValue //  表示对枚举序列化时返回此字段
        private final String label;

        FunType(String value, String label) {
            this.value = value;
            this.label = label;
        }
    }

    @Getter
    public enum DeviceType {
        WEB("web", "电脑"),
        MOBILE("mobile", "手机");

        @EnumValue //  Mybatis-Plus 提供注解表示插入数据库时插入该值
        private final String value;

        // @JsonValue //  表示对枚举序列化时返回此字段
        private final String label;

        DeviceType(String value, String label) {
            this.value = value;
            this.label = label;
        }
    }


}
